It is widely felt that computing is too complicated, not only on a personal level but also at every level. Getting information technology infrastructure in (the hardware, the software, the services and support) is becoming too complex. It's felt that it's time to radically change the way we compute. Computing should work more like out autonomic nervous system. The autonomic nervous system regulates your body's basic functions without your conscious awareness. For instance, when you run to catch the train you don't need to consciously decide to excrete adrenaline, reallocate oxygen to the muscles in your legs and increase your heart rate. Walk from your cozy home into the cold of winter, and your body redirects blood flow away from any exposed areas (like your face) to maintain a constant internal temperature. Your autonomic nervous system does all of this for you.
Computers should demonstrate the same ability to regulate themselves. In fact, if we plan to continue to expand the network of reliable interconnected systems, they must regulate themselves. There are simply too many operations taking place for human administrators to oversee.
At current rates of expansion, it has been estimated that there will not be enough skilled Information Technology (I/T) people to keep the world's computing systems running. Unfilled I/T jobs in the United States alone number in the hundreds of thousands. Even in uncertain economic times, demand for skilled I/T workers are expected to increase by over 100 percent in the next six years. By some estimates, global support for a billion people and millions of businesses connected via the Internet (a situation we could reach in the next decade) could require more than 200 million I/T workers; that's close to the population of the entire United States.
Autonomic computing has been proposed to solve the problem. Some characteristics of Autonomic computing are that an Autonomic computer system should:                *Know itself* and comprise components that also possess a system identity;        Configure and reconfigure itself under varying and unpredictable conditions;        Never settle for the status quo—it always looks for ways to optimize its workings;        Perform something akin to healing—it must be able to recover from routine and extraordinary events that might cause some of its parts to malfunction;        Be an expert in self-protection—a virtual world is no less dangerous than the physical one;        Know its environment and the context surrounding its activity, and acts accordingly;        Function in a heterogeneous world and implement open standards—it cannot exist in a hermetic environment; and        Anticipate the optimized resources needed while keeping its complexity hidden.        
An Autonomic computer system therefore, should be Self-configuring; Self-protecting; Self-healing; and Self-optimizing.
In autonomic computing environments, identification of situations for enabling the configuring and optimizing, healing and management of networked environments is a problem. Traditional methods use a rule-based approach, where a set of rules are defined to identify the conditions and resulting actions to take.
In example cases of a self-configuring, self-optimizing, self-healing, and self-protecting environment, the system must find patterns in the context of the system resources. A standard way to do this is through the use of rule-based systems.
Typically, rule-based systems are used to perform complex task in an “intelligent” fashion. But there are many drawbacks to the rule-based approach. Most notably, there are complications as the number of rules increase and the interaction between the rule-sets becomes more uncertain.
Language-based approaches provide more structure when constructing these potential solutions.